package com.fowo.api.model.logistics.channel;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 物流渠道 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class LogisticsChannelImportPo {

  /** 物流渠道 */
  @ExcelProperty("*物流渠道")
  @NotBlank(message = "物流渠道不能为空")
  @Size(max = 50, message = "物流渠道长度不能超过50")
  private String name;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String channelNameName;

  @ExcelIgnore
  @Schema(title = "物流商")
  private String channelName;

  /** 预计时效 */
  @ExcelProperty("预计时效")
  @IntegerString(message = "预计时效数值格式不正确", label = "预计时效")
  private String expectAgeing;

  /** 邮编 */
  @ExcelProperty("邮编")
  @Size(max = 50, message = "邮编长度不能超过50")
  private String zipCode;

  /** 运输方式 */
  @ExcelProperty("运输方式")
  @EnumsString(
    value = { "海派", "空派" },
    message = "运输方式只能是“海派”, “空派”中的一个"
  )
  private String modeShipping;

  /** 目的国家 */
  @ExcelProperty("目的国家")
  @Size(max = 200, message = "目的国家长度不能超过200")
  private String destinationCountryCountry;

  @ExcelIgnore
  @Schema(title = "目的国家")
  private String destinationCountry;

  /** 提货地址 */
  @ExcelProperty("提货地址")
  @Size(max = 50, message = "提货地址长度不能超过50")
  private String deliveryAddressName;

  @ExcelIgnore
  @Schema(title = "提货地址")
  private String deliveryAddress;

  /** 是否包税 */
  @ExcelProperty("是否包税")
  @EnumsString(
    value = { "是", "否" },
    message = "是否包税只能是“是”, “否”中的一个"
  )
  private String taxIncluded;

  /** 状态 */
  @ExcelProperty("状态")
  @EnumsString(
    value = { "启用", "禁用" },
    message = "状态只能是“启用”, “禁用”中的一个"
  )
  private String state;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;

  /** 计费规则 */
  @ExcelProperty("计费规则")
  @EnumsString(
    value = { "计费重(KG)", "实重(KG)", "体积(KG)" },
    message = "计费规则只能是“计费重(KG)”, “实重(KG)”, “体积(KG)”中的一个"
  )
  private String bllingRules;

  /** 材积参数 */
  @ExcelProperty("材积参数")
  @Size(max = 50, message = "材积参数长度不能超过50")
  private String volumeParameter;

  /** 分抛计算 */
  @ExcelProperty("分抛计算")
  @EnumsString(
    value = { "是", "否" },
    message = "分抛计算只能是“是”, “否”中的一个"
  )
  private String splitCalculation;

  /** 单票最小重量 */
  @ExcelProperty("单票最小重量")
  @IntegerString(message = "单票最小重量数值格式不正确", label = "单票最小重量")
  private String minWeight;

  /** 计费规则 */
  @ExcelProperty("计费规则")
  private String billingRules;

  /** 基材参数 */
  @ExcelProperty("基材参数")
  @IntegerString(
    message = "基材参数数值格式不正确",
    label = "基材参数",
    min = 0
  )
  private String substrateParam;

  /** 分抛计算 */
  @ExcelProperty("分抛计算")
  private String splitCalc;

  /** 单票最小重量 */
  @ExcelProperty("单票最小重量")
  @IntegerString(
    message = "单票最小重量数值格式不正确",
    label = "单票最小重量",
    min = 0
  )
  private String ticketMinWeight;

  /** 单票最小重量单位 */
  @ExcelProperty("单票最小重量单位")
  private String ticketMinWeightUnit;
}
